\contentsline {section}{\numberline {1}Introduction}{4}
\contentsline {section}{\numberline {2}Log Laplace review and MLE derivation}{6}
\contentsline {subsection}{\numberline {2.1}Log Laplace PDF}{6}
\contentsline {subsection}{\numberline {2.2}Estimators for Log-Laplace Parameters}{6}
\contentsline {section}{\numberline {3}Proprietary Distribution}{12}
\contentsline {section}{\numberline {4}CUDA programming review}{13}
\contentsline {subsection}{\numberline {4.1}CUDA threads architecture and control}{13}
\contentsline {subsection}{\numberline {4.2}GPU memory}{15}
\contentsline {section}{\numberline {5}Parallel Computing in CUDA}{18}
\contentsline {subsection}{\numberline {5.1}Motivation for Acceleration}{18}
\contentsline {subsection}{\numberline {5.2}Sequential Programming in C++}{19}
\contentsline {subsection}{\numberline {5.3}Parallel Programming in CUDA}{19}
\contentsline {subsection}{\numberline {5.4}Results}{20}
\contentsline {section}{\numberline {6}GPGPU Techniques and Results}{22}
\contentsline {subsection}{\numberline {6.1}Identifying the Bottleneck}{22}
\contentsline {subsection}{\numberline {6.2}General GPGPU techniques}{23}
\contentsline {subsection}{\numberline {6.3}Acceleration Techniques: Summing GPGPU threads}{25}
\contentsline {subsection}{\numberline {6.4}Acceleration Techniques: GPU Memory}{31}
\contentsline {subsection}{\numberline {6.5}Acceleration Techniques: OPENMP + CUDA}{34}
\contentsline {section}{\numberline {7}Acceleration Using Properties of Data}{37}
\contentsline {subsection}{\numberline {7.1}Circular Buffer}{37}
\contentsline {subsection}{\numberline {7.2}Lookup Table Implementation}{38}
\contentsline {subsection}{\numberline {7.3}Bins for Unique Data Points}{39}
\contentsline {subsection}{\numberline {7.4}Drawbacks of Using Data Structures}{41}
\contentsline {section}{\numberline {8}Conclusion}{43}
\contentsline {section}{\numberline {9}References}{44}
